/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package Pagos.Dialogos.Xml;

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 *
 * @author FCCCRTI05
 */
public class DatosUsuario extends HttpServlet
{

    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException
    {
        PrintWriter out = response.getWriter();
        //REINICIO DEL BUFFER
        response.reset();
        response.resetBuffer();
        response.setContentType("text/xml; charset=ISO-8859-1");
        response.setHeader("Cache-Control","no-cache");
        try
        {
            //CONEXION A LA BD
            //CUANDO SEA SIN INICIAR SESION Y RECUPERAR CONTRASENA
            if (request.getParameter("origen") != null)
            {
                db.Conexion conectar = new db.Conexion();
                conectar.ConectarSQLServer();
                Connection conex = conectar.ObtenerConexionSQLServer();
                //PARAMETROS
                String usuario = request.getParameter("usuario");
                Statement s = null;
                ResultSet rs = null;
                //SALIDA XML
                s = conex.createStatement();
                rs = s.executeQuery("select nombres_usu,usuario_usu,mail_usu from F55_PAGOS_USUARIOS"+
                " where usuario_usu like "+"'"+usuario+"'");
                if ((rs != null)&&(rs.next()))
                {
                    out.write("<datos>");
                    out.write("<valido>Si</valido>");
                    out.write("<nombres>"+rs.getString("nombres_usu")+"</nombres>");
                    out.write("<mail>"+rs.getString("mail_usu")+"</mail>");
                    out.write("</datos>");
                }
                else
                {
                    out.write("<datos>");
                    out.write("<valido>No</valido>");
                    out.write("<nombres>No encontrado</nombres>");
                    out.write("<mail>No encontrado</mail>");
                    out.write("</datos>");
                }
                rs.close();
                s.close();
                conex.close();
            }
            else
            {
                db.Conexion conectar = (db.Conexion)request.getSession().getAttribute("db");
                if (conectar != null)
                {
                    Connection conex = conectar.ObtenerConexionSQLServer();
                    if (conex.isValid(0) == true)
                    {
                        if ((request.getParameter("flag") != null)
                        &&(request.getParameter("usuario") != null)
                        &&(request.getParameter("tipo_compra") != null)
                        &&(request.getParameter("flag").equals("ok")))
                        {
                            //PARAMETROS
                            String usuario = request.getParameter("usuario");
                            String tipo_compra = request.getParameter("tipo_compra")+"%";
                            Statement s = null;
                            ResultSet rs = null;
                            //SALIDA XML
                            s = conex.createStatement();
                            rs = s.executeQuery("select nombres_usu,usuario_usu,puesto_usu,mail_usu,descrip_puesto,monto_puesto,tipo_compra_puesto"+
                            " from usuarios,puestos"+
                            " where usuario_usu like "+"'"+usuario+"'"+" and descrip_puesto like puesto_usu and tipo_compra_puesto like "+"'"+tipo_compra+"'");
                            if ((rs != null)&&(rs.next()))
                            {
                                out.write("<datos>");
                                out.write("<valido>Si</valido>");
                                out.write("<nombres>"+rs.getString("nombres_usu")+"</nombres>");
                                out.write("<puesto>"+rs.getString("puesto_usu")+"</puesto>");
                                out.write("<monto>"+rs.getString("monto_puesto")+"</monto>");
                                out.write("<mail>"+rs.getString("mail_usu")+"</mail>");
                                out.write("</datos>");
                            }
                            else
                            {
                                out.write("<datos>");
                                out.write("<valido>Si</valido>");
                                out.write("<nombres>No definido</nombres>");
                                out.write("<puesto>No definido</puesto>");
                                out.write("<monto>No definido</monto>");
                                out.write("<mail>No definido</mail>");
                                out.write("</datos>");
                            }
                            rs.close();
                            s.close();
                        }
                    }
                    if (conex.isValid(0) == false)
                    {
                        out.write("<datos>");
                        out.write("<valido>No</valido>");
                        out.write("<nombres>Sesion</nombres>");
                        out.write("<puesto>Sesion</puesto>");
                        out.write("<monto>Sesion</monto>");
                        out.write("<mail>Sesion</mail>");
                        out.write("</datos>");
                    }
                }
                if (conectar == null)
                {
                    out.write("<datos>");
                    out.write("<valido>No</valido>");
                    out.write("<nombres>Sesion</nombres>");
                    out.write("<puesto>Sesion</puesto>");
                    out.write("<monto>Sesion</monto>");
                    out.write("<mail>Sesion</mail>");
                    out.write("</datos>");
                }
            }
        }
        catch (Exception x)
        {
            out.write("<datos>");
            out.write("<valido>No</valido>");
            out.write("<nombres>"+x.getMessage()+"</nombres>");
            out.write("<puesto>"+x.getMessage()+"</puesto>");
            out.write("<monto>"+x.getMessage()+"+</monto>");
            out.write("<mail>"+x.getMessage()+"</mail>");
            out.write("</datos>");
        }
        finally
        {
            out.flush();
            out.close();
        }
    }

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException
    {
        processRequest(request, response);
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException
    {
        processRequest(request, response);
    }
}